<?php
declare (strict_types = 1);

namespace plugin\ky_black\app\admin\model;

use support\Model;

class BusinessPartner extends Model
{
    /**
     * 关联到模型的数据表
     *
     * @var string
     */
    protected $table = 'business_partner';

    /**
     * 主键名称
     *
     * @var string
     */
    protected $primaryKey = 'partner_id';

    /**
     * 可以批量赋值的属性
     *
     * @var array
     */
    protected $fillable = [
        'name',
        'contact_name',
        'contact_phone',
        'province',
        'city',
        'district',
        'address',
        'business_license',
        'logo',
        'images',
        'description',
        'business_hours',
        'business_type_id',
        'service_level',
        'status',
        'sort',
        'area_desc',
        'service_items',
        'service_content'
    ];

    /**
     * 追加到模型数组表单的访问器
     *
     * @var array
     */
    protected $appends = [
        'status_text',
        'service_level_text'
    ];

    /**
     * 获取状态文本
     */
    public function getStatusTextAttribute()
    {
        return $this->status == 1 ? '启用' : '禁用';
    }

    /**
     * 获取服务等级文本
     */
    public function getServiceLevelTextAttribute()
    {
        $levels = [
            'vip' => 'VIP商家',
            'normal' => '普通商家'
        ];
        return $levels[$this->service_level] ?? '';
    }

    /**
     * 关联商家类型
     */
    public function businessType()
    {
        return $this->belongsTo(BusinessType::class, 'business_type_id', 'id');
    }

    /**
     * 获取商家类型名称
     */
    public function getBusinessTypeNameAttribute()
    {
        return $this->businessType->name ?? '';
    }

    /**
     * 搜索范围
     */
    public function scopeSearch($query, $keyword)
    {
        if ($keyword) {
            return $query->where(function($q) use ($keyword) {
                $q->where('name', 'like', "%{$keyword}%")
                  ->orWhere('contact_name', 'like', "%{$keyword}%")
                  ->orWhere('contact_phone', 'like', "%{$keyword}%");
            });
        }
        return $query;
    }
} 